class Actor:
	def __init__(self, name, tile, position, map):
		self._tile = tile
		self.name = name
		self.map = map
		self.xpos, self.ypos = position

	def jump(self, position):
		self.xpos, self.ypos = position
		return self

	def tile(self):
		return self._tile

	def move(self, heading):
		self.xpos += heading[0]
		self.ypos += heading[1]
# 		self.map.invokeEvent(onMove, self, (self.xpos, self.ypos)
		return self

	def position(self):
		return (self.xpos, self.ypos)


class Player(Actor):
	def __init__(self, name, tile, position, map):
		if not name:
			name="Unnamed"
		Actor.__init__(self, name, tile, position, map)

class NPC(Actor):
	def __init__(self, name, tile, position, map, model="None"):
		if not name:
			name="Unnamed"
		Actor.__init__(self, name, tile, position, map)
		self.model = model

class Landscape(Actor):
	def __init__(self, name, tile, position, map):
		if not name:
			name="Nothing"
		Actor.__init__(self, name, tile, position, map)
		self.landscape = True
